/**
 超级封装王  支持XML 转 对象 对象转XML
 下载网址:https://x-stream.github.io/download.html
 需要使用的2个jar包
    1.xpp3_min_1.1.4c.jar
    2.xstream_1.4.2.jar

xtream 解析的步骤案例
 1.给文件路径
 File file = ResourceUtils.getFile("classpath:comconfigParse.xml");
 2.字节流装载
 FileInputStream ins = new FileInputStream(file);
 3.实例化 选择构造方式  （什么模式 和 什么编码）
 XStream xstream = new XStream(new DomDriver("utf-8"));
 4.自动检查元数据 开启   @这种
 xstream.autodetectAnnotations(true);
 5.启动保安系统  用于授权 比较关键（默认是权限全关）
 XStream.setupDefaultSecurity(xstream);
 6.授权可用的壳 （封装类）
 xstream.allowTypes(new Class[]{ComconfigParse.class, Comconfig.class, Parse.class});
 7.设置加载器   （JDK ? ,c,c++ )
 xstream.setClassLoader(ComconfigParse.class.getClassLoader());
 8.运行中的元数据
 xstream.processAnnotations(ComconfigParse.class);
 9.转格式
 configParse = (ComconfigParse) xstream.fromXML(ins);

 */
package 第十七章_XML与JSON.XML_XSTREAM_JAVA2XML;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
import org.junit.Test;


public class Xtream_run {
    @Test
    public void xStream_run() throws NoSuchFieldException {
        Person p =new Person() ;
        p.setPersonid("标签的id");
        p.setAddress("地址:是这个地址");
        p.setFax("fax:是这个fax");
        p.setName("姓名:是这个姓名");
        p.setEmail("邮箱:是这个邮箱");
        p.setTel("12312323");
        final XStream xstream = new XStream(new Xpp3Driver());


        xstream.alias("Person",Person.class);
        xstream.useAttributeFor(Person.class,"personid");
        String xml = xstream.toXML(p);
        System.out.println(xml);
        //解析XML
        //记得添加权限。xtream有个保安类管理权限的
        // 第一句是把封装类型person丢进保安类中的权限集合中
        // 下面第二句权限全开
        xstream.allowTypes(new Class[]{Person.class});
        //xstream.addPermission(AnyTypePermission.ANY);
        Person person = (Person) xstream.fromXML(xml);
        System.out.println(person.toString());
    }
}
